﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using AnalizadorCsv.Clases;
using AnalizadorCsv.Configuracion;
using AnalizadorCsv.Analizador;

namespace AnalizadorCsv
{
    public partial class Form1 : Form
    {
        private String[] archivos;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (buscar.ShowDialog()==System.Windows.Forms.DialogResult.OK)
            {
                textBox1.Text = buscar.SelectedPath;
                archivos = Directory.GetFiles(textBox1.Text, "*.csv");
                foreach (String arch in archivos)
                {
                    FileInfo fi = new FileInfo(arch);
                    String name = fi.Name;
                    listBox1.Items.Add(name);
                }
                button7.Enabled = true;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (listBox1.Items.Count > 0)
            {
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    listBox2.Items.Add(listBox1.Items[i].ToString());
                }
                listBox1.Items.Clear();
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (listBox2.Items.Count > 0)
            {
                for (int i = 0; i < listBox2.Items.Count; i++)
                {
                    listBox1.Items.Add(listBox2.Items[i].ToString());
                }
                listBox2.Items.Clear();
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {

            int pos = listBox1.SelectedIndex;
            if (pos != -1)
            {
                List<String> selec = new List<String>();
                foreach (int val in listBox1.SelectedIndices)
                {
                    selec.Add(listBox1.Items[val].ToString());
                }
                foreach (String s in selec)
                {
                    listBox1.Items.Remove(s);
                    listBox2.Items.Add(s);
                }
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            int pos = listBox2.SelectedIndex;
            if (pos != -1)
            {
                listBox1.Items.Add(listBox2.Items[pos].ToString());
                listBox2.Items.RemoveAt(pos);
            }

        }

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AboutBox1 ventana = new AboutBox1();
            ventana.ShowDialog();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (listBox2.Items.Count == 0)
            {
                MessageBox.Show("Debes seleccionar al menos un archivo", "Seleccion de Archivos", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                List<String> archivEnc = new List<String>();
                
                foreach (String s in archivos)
                {
                    archivEnc.Add(s);    
                }
                List<String> selec = new List<String>();
                for (int i = 0; i < listBox2.Items.Count; i++)
                {
                    selec.Add(listBox2.Items[i].ToString());
                }
                Proceso proceso = new Proceso(selec, archivEnc);
                Detalles detalles = new Detalles(proceso);
                proceso.asignarDetalle(detalles);
                //this.Visible = false;
                proceso.iniciarProceso();
                //this.Visible = true;
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            String[] confInicial = verificar.obtenerArchivosComunes();
            listBox2.Items.Clear();
            foreach (String actual in confInicial)
            {
                listBox1.Items.Remove(actual);
                listBox2.Items.Add(actual);
            }
        }

        private void configuracionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ConfiguracionOpciones ventana = new ConfiguracionOpciones();
            ventana.ShowDialog();
        }
    }
}
